import java.util.HashSet;
import java.util.Set;

public class LongestSubstringWithoutRepeatingCharacters {
    /**
     * 给定一个字符串 s ，请你找出其中不含有重复字符的 最长子串 的长度。
     * @param s
     * @return
     * 解题思路：
     * 双指针
     * 难点：如何去除掉重复字符
     */
    public static  int lengthOfLongestSubstring(String s) {
        int len = s.length();
        if (len==0)
            return 0;
        int l = 0,r=0,ans =0;
        Set<Character> set = new HashSet<Character>();
        while (r<len){
            char c = s.charAt(r);
            r++;
            while (set.contains(c)){
                set.remove(s.charAt(l));
                l++;
            }
            set.add(c);
            ans = Math.max(ans,set.size());
        }

        return ans;

    }


    public static void main(String[] args) {
        lengthOfLongestSubstring("abcaaa");
    }
}
